home *** CD-ROM | disk | FTP | other *** search
/ Netware Super Library / Netware Super Library.iso / pgm_tool / lu62 / debug / rem_path.c < prev    next >
C/C++ Source or Header  |  1995-07-03  |  4KB  |  115 lines

  1. /*
  2.  *  CopyRight 1995. Nicholas Poljakov all rights reserved.
  3.  */
  4. /*************************  REM_PATH.C  ***************************/
  5. /*                 get path for remote disk                       */
  6. /******************************************************************/
  7.  
  8. #include <dos.h>
  9. #include <stdio.h>
  10. #include <string.h>
  11. #include <io.h>
  12. #include <fcntl.h>
  13. #include <stdlib.h>
  14. #include <state1.h>
  15. extern char lu_id[8];
  16. extern char tp_id[8];
  17. extern char tp_exist;
  18. extern struct  part {            /* partner structure */
  19.           char     plu[8] ;         /* str plu_name        */
  20.                   int psl;                    /* str plu_s_limit     */
  21.           char     mode_name[8] ;         /* str mode_name        */
  22.                   int max_ru_size;            /* str ru_h_size       */
  23.                   int pacing;                 /* str =               */
  24.                   unsigned char lu_type;
  25.                }  pstr[4];
  26.  
  27. rem_path(rp, from)
  28. char *rp;
  29. int from;
  30. {
  31.     unsigned  long conv_id;
  32.     unsigned char rts;
  33.     unsigned char wr;
  34.     unsigned int max_length ;
  35.     unsigned  char tpn[64];
  36.     struct rc {
  37.                 unsigned int prim;
  38.                 unsigned long sec;
  39.               } v_rc;
  40.     unsigned long rc;
  41.     char p_lu[9];
  42.     char p_mode[9];
  43.     struct msg {  /*send_data*/
  44.                 int len;
  45.                 char str[40];
  46.                } gds;
  47.     int length;
  48.  
  49.               if (!tp_exist) {
  50.                  tp_started
  51.                              (lu_id,
  52.                               tp_id,
  53.                               &rc);
  54.                  if (rc != 0) {
  55.                                  return (-1);
  56.                                }
  57.                  tp_exist = 1; /* TP_started O.K! */
  58.               }
  59.  
  60.               strcpy (tpn,"DIR "); /* name of work */
  61.               strcat (tpn, "path");      /* name of sub-funct */
  62.               /*conv_id - return param -id work link */
  63.               strcpy(p_lu, pstr[from].plu);
  64.               strcpy(p_mode, pstr[from].mode_name);
  65.  
  66.               allocate  (p_lu,
  67.                          p_mode,
  68.                          tpn,
  69.                          WHEN_SESSION_ALLOCATED,
  70.                          NONE,
  71.                          NONE,
  72.                          NULL,
  73.                          NULL,
  74.                          tp_id,
  75.                          &conv_id,
  76.                          NULL,
  77.                          &v_rc) ;
  78.  
  79.               if (v_rc.prim != 0) {
  80.                   return (-1);
  81.               }
  82.               max_length = 255;
  83.               recwait (tp_id,   /* receive DATA */
  84.                        conv_id,
  85.                        ll,
  86.                        &v_rc,
  87.                        &length,
  88.                        max_length,
  89.                        &rts,
  90.                        &gds,
  91.                        &wr);
  92.               if (v_rc.prim != 0) {
  93.                   return -1;
  94.           }
  95.               gds.str[gds.len - 2] = 0x00;
  96.           strcpy (rp, gds.str);
  97.               recwait (tp_id,   /* receive DEALLOCATE_NORMAL */
  98.                        conv_id,
  99.                        ll,
  100.                        &v_rc,
  101.                        &length,
  102.                        max_length,
  103.                        &rts,
  104.                        &gds,
  105.                        &wr);
  106.               if (v_rc.prim != 0) {
  107.                   if (v_rc.prim == deallocate_normal) {
  108.                         return 0;
  109.                   }
  110.                   else
  111.                         return -1;
  112.               }
  113.        return 0;
  114. }
  115.